﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using KimberlyDashboardLIB;
using System.Data;

namespace KimberlyDashboard.admin
{
    public partial class SubirInformacion : cGlobal
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                this.CargarAnos();
            }
        }

        private bool ValidarArchivo()
        {
            string mensaje = "";
            //Longitud de los textos
            if (!this.FileUpload1.HasFile)
                mensaje += "- Debe seleccionar el archivo con la información";
            else
            { 
                if (!this.FileUpload1.FileName.EndsWith(".xls"))
                    mensaje += "- Solo se permiten archivos con extensión .xls";
            }

            if (mensaje.Length > 0)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('No se puede subir la información: " + mensaje + "'); </Script>");
                return false;
            }
            else
                return true;        
        }

        protected void lnkGuardar_Click(object sender, EventArgs e)
        {
            if (this.ValidarArchivo())
            {
                string ruta = Server.MapPath("~/archivos");
                try
                {
                    ruta = Path.Combine(ruta, FileUpload1.FileName);
                    this.FileUpload1.SaveAs(ruta);
                }
                catch (Exception ex)
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('No se pudo guardar el archivo: " + Utilidades.FormatearMensajeError(ex.Message) + "'); </Script>");
                }

                //Se lee el archivo y se guarda su información
                try
                {
                    objDashboard.SubirInformacion(ruta, Convert.ToInt32(this.drpAno.SelectedValue));                    
                }
                catch (Exception ex)
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('Ocurrió un error al leer el archivo: " + Utilidades.FormatearMensajeError(ex.Message) + "'); </Script>");
                }

                this.MostrarValores();
            }
        }

        protected void btnAceptar_Click(object sender, EventArgs e)
        {
        }

        private void CargarAnos()
        {
            int ano = DateTime.Now.Year - 3;
            int[] anos = new int[6];
            for (int i = ano; i < ano + 5; i++)
            {
                this.drpAno.Items.Add(i.ToString());
            }
            this.drpAno.SelectedValue = DateTime.Now.Year.ToString();
        }

        private void MostrarValores()
        {
            try
            {
                //Se obtienen los valores de los meses, Q y metas; y los indicadores
                DataSet dtsMes = objDashboard.GetValores(Enumeraciones.Valores.VALORMES, Convert.ToInt32(this.drpAno.SelectedValue), Convert.ToInt32(this.drpAno.SelectedValue), 1, 12, 0);
                DataSet dtsQ = objDashboard.GetValores(Enumeraciones.Valores.VALORQ, Convert.ToInt32(this.drpAno.SelectedValue), Convert.ToInt32(this.drpAno.SelectedValue), 1, 12, 0);
                DataSet dtsMeta = objDashboard.GetValores(Enumeraciones.Valores.VALORMETA, Convert.ToInt32(this.drpAno.SelectedValue), Convert.ToInt32(this.drpAno.SelectedValue), 1, 12, 0);
                DataSet dtsIndicadores = objDashboard.GetIndicadores(0);

                //Se construye un datatable que contendra toda la ifnromacion organizada
                DataTable dt = new DataTable();
                dt.Columns.Add("KPI");
                dt.Columns.Add("Ene");
                dt.Columns.Add("Feb");
                dt.Columns.Add("Mar");
                dt.Columns.Add("YTD 1Q");
                dt.Columns.Add("Meta 1Q");
                dt.Columns.Add("Abr");
                dt.Columns.Add("May");
                dt.Columns.Add("Jun");
                dt.Columns.Add("YTD 2Q");
                dt.Columns.Add("Meta 2Q");
                dt.Columns.Add("Jul");
                dt.Columns.Add("Ago");
                dt.Columns.Add("Sep");
                dt.Columns.Add("YTD 3Q");
                dt.Columns.Add("Meta 3Q");
                dt.Columns.Add("Oct");
                dt.Columns.Add("Nov");
                dt.Columns.Add("Dic");
                dt.Columns.Add("YTD 4Q");
                dt.Columns.Add("Meta 4Q");

                //Se recorren los indicadores y se van asignando los valores
                DataRow dr;
                string nombreIndicador;
                for (int i = 0; i < dtsIndicadores.Tables[0].Rows.Count; i++)
                {
                    nombreIndicador = dtsIndicadores.Tables[0].Rows[i]["Nombre"].ToString();
                    dr = dt.NewRow();
                    dr["KPI"] = nombreIndicador;

                    dr["Ene"] = dtsMes.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Mes = 1");
                    dr["Feb"] = dtsMes.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Mes = 2");
                    dr["Mar"] = dtsMes.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Mes = 3");
                    dr["Abr"] = dtsMes.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Mes = 4");
                    dr["May"] = dtsMes.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Mes = 5");
                    dr["Jun"] = dtsMes.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Mes = 6");
                    dr["Jul"] = dtsMes.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Mes = 7");
                    dr["Ago"] = dtsMes.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Mes = 8");
                    dr["Sep"] = dtsMes.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Mes = 9");
                    dr["Oct"] = dtsMes.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Mes = 10");
                    dr["Nov"] = dtsMes.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Mes = 11");
                    dr["Dic"] = dtsMes.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Mes = 12");

                    dr["YTD 1Q"] = dtsQ.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Q = 1");
                    dr["YTD 2Q"] = dtsQ.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Q = 2");
                    dr["YTD 3Q"] = dtsQ.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Q = 3");
                    dr["YTD 4Q"] = dtsQ.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Q = 4");

                    dr["Meta 1Q"] = dtsMeta.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Q = 1");
                    dr["Meta 2Q"] = dtsMeta.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Q = 2");
                    dr["Meta 3Q"] = dtsMeta.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Q = 3");
                    dr["Meta 4Q"] = dtsMeta.Tables[0].Compute("SUM(Valor)", "Nombre='" + nombreIndicador + "' AND Q = 4");

                    dt.Rows.Add(dr);
                }

                this.grdResultados.DataSource = dt;
                this.grdResultados.DataBind();
            }
            catch (Exception ex)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "JS", "<script language='javascript'> alert('Ocurrió un error al mostrar los valores: " + Utilidades.FormatearMensajeError(ex.Message) + "'); </Script>");                
            }
        }


    }
}